<?php
	/**
	 * 生成静态页面
	 */
	 
	 class StaticFileController extends Controller{
	 	
		public function __init(){
			if(!isset($_SESSION['aid']) || !isset($_SESSION['adminuser'])){
//				$this->error('您还没有登陆呢!',__MODULE__.'/login');
				U(__WEB__.'Admin/login');
			}
		}
		
		/**
		 * 生成前端主页HTML页面
		 */
		 public function index(){
		 	
			$this->_cacheHtml('Index/index','./index.html');		 	
			$this->success('首页静态页面生成成功',U('Admin/Index/welcome'));
		 }
		
		
		/**
		 * 生成静态列表页
		 */
		 public function lists(){
		 	//先获得所有静态的分类
		 	$staticList = M('category')->where('is_listhtml=1')->all();
			//为每个分类生成静态列表页面
			//y设置保存的目录
			foreach($staticList  as $list){
				//将当前的Cid传递给get参数cid那样下面在调用在
				//访问的时候就可以拿到这个cid
				$_GET['cid'] = $list['cid'];
				//组合当前每个页码的静态地址
				Page::$staticUrl = __ROOT__ .'/Static/' . C('INDEX_TPL_STYLE') . '/' . $list['htmldir'] .'/{page}.html';
				//生成
				$this->_cacheHtml('List/index','Static/' . C('INDEX_TPL_STYLE') . '/' . $list['htmldir'] .'/index.html');

				for($i=1;$i<=Page::$staticTotalPage;$i++){
					$_GET['page'] = $i;
					//将每个页生成一个HTML静态文件
					$this->_cacheHtml('List/index','Static/' . C('INDEX_TPL_STYLE') . '/' . $list['htmldir'] .'/'.$i.'.html');
				}
				
			}	
			$this->success('列表页生成静态成功',U('Admin/Index/welcome'));	
			
		 }
		 
		 /**
		  * 生成静态文章页
		  */
		  public function arts(){
		  	
			//先关联查询相应的 先相应的文章的分类和文章查询出来
			//然后再查看这个分类是否 要使用 is_arthtml 还有
			//组合静态目录的路径 
			//查询相应静态文件保存的目录 htmldir
			$artHtmls = M()->join('__category__ c JOIN  __article__ a ON c.cid=a.category_cid')->field('aid,htmldir')->where('is_archtml=1')->select();
			
			foreach($artHtmls as $html){
				//传入相应的aid
				$_GET['aid'] = $html['aid'];
				$filePath = 'Static/'.C('INDEX_TPL_STYLE').'/'.$html['htmldir'].'/'.$html['aid'].'.html';
				$this->_cacheHtml('Details/details',$filePath);
				
			}
			$this->success('文章静态页面生成成功',U('Admin/Index/welcome'));
		  }
		  
		
		/**
		 * 生成静态HTML页面公用 方法
		 * 1、开启缓冲区
		 * 2、将缓冲区的内容写入到指定的文件中
		 */
		private function _cacheHtml($CA,$path){
			//开户缓冲区
			ob_start();
			A('Index/'.$CA);
			$data = ob_get_contents();  //将缓冲区的内容放入一个变量中
			//清除缓冲
			ob_clean();
			//将缓冲区写入指定文件中 一般是在static目录中的html目录中如果目录不存在那么创建他
			$dir = dirname($path);
			is_dir($dir) || mkdir($dir,0777,true);
//			$path = ROOT_PATH .'Static/html/' .$path;
			file_put_contents($path,$data); 
			
			
		}
		
	 }
	